Accessing media context information using contextual links

ABSTRACT

The systems and methods described herein are directed toward launching a third party application in a media center module using a contextual link. The media center module is configured to enable the third party application to register with the module and to associate a contextual link corresponding to the third party application with a context provided by the media center module. In response to a request for information related to the context, the media center module is configured to direct to a location associated with the contextual link. The media center module is further configured to provide to the location data that identifies the context. In response to the provided data, the location is populated with the requested information. Thus, the use of conditional link enables a third party application to register to be a context handler for a media center module.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application is related to U.S. patent application Ser. No. ______,titled “MEDIA SOFTWARE NAVIGATION WITH CONDITIONAL LINKS”, Docket No.MS#311468.01, the content of which is hereby incorporated by reference.

BACKGROUND

As the popularity of digital media continues to gain momentum, more andmore users are using computers as their primary source of mediaplayback. This trend is, in part, driven by the superior versatility ofa programmable computing device, as compared to a dedicated, singlepurpose electronic device, such as a DVD player. For example, a computermay be programmed to playback and view many types of media, such asaudio, video, graphics, documents, web content, etc. The extensivenessand diversify of the network and program interfaces found in computersare often essential to gain access to online digital media content. Theability to access the Internet also allows users to obtain enhancedcontent related to the media from online content providers.

Unfortunately, a conventional computer is typically not as user-friendlyas a typical electronic media device. To play media content, the userinterface offered by conventional computers often require more effortthan pushing one or two buttons on a remote control. Also, users oftenhave to use applications that are provided by third party onlineproviders in order to receive the desire content offered by thoseproviders.

A user-friendly way for third party providers to provide content tocomputer users without the need for a user to perform extensive setupand monitoring using the providers' applications continue to elude thoseskilled in the art.

DESCRIPTION OF THE DRAWINGS

The present description will be better understood from the followingdetailed description read in light of the accompanying drawings,wherein:

FIG. 1 illustrates an example system for handling digital media content.

FIG. 2 illustrates an example implementation of a conditional link inthe media center module shown in FIG. 1.

FIG. 3 illustrates an example implementation of a contextual link in themedia center module shown in FIG. 1.

FIG. 4 shows an example process for incorporating a conditional link fornavigating to a media application.

FIG. 5 shows an example process for incorporating contextual links fornavigating to a media application.

FIG. 6 shows an exemplary computer device for implementing the describedsystems and methods.

Like reference numerals are used to designate like parts in theaccompanying drawings.

DETAILED DESCRIPTION

The detailed description provided below in connection with the appendeddrawings is intended as a description of the present examples and is notintended to represent the only forms in which the present example may beconstructed or utilized. The description sets forth the functions of theexamples and the sequence of steps for constructing and operating theexamples. However, the same or equivalent functions and sequences may beaccomplished by different examples.

The systems and methods described herein are directed toward launching athird party application in a media center module using a contextuallink. The media center module is configured to enable the third partyapplication to register with the module and to associate a contextuallink corresponding to the third party application with a contextprovided by the media center module. In response to a request forinformation related to the context, the media center module isconfigured to direct to a location associated with the contextual link.The media center module is further configured to provide to the locationdata that identifies the context. In response to the provided data, thelocation is populated with the requested information. Thus, the use ofconditional link enables a third party application to register to be acontext handler for a media center module.

FIG. 1 illustrates an example system 100 for handling digital mediacontent. The system 100 may include software modules in computing device105 and servers 143-144. Computing device 105 includes media centermodule 110 configured to provide an environment for applications toprovide digital media content to computing device 105. Media centermodule 110 is also configured to manage the applications and the digitalmedia content. For example, media center module 110 may interact withthird party applications 136-137, which may be configured to communicatewith third-party provider services 146-147 to provide digital mediafiles 120 and other related information.

Media center module 110 may be implemented as an application or acomponent of the operating system for computing device 105. An exampleof media center module 110 is WINDOW® XP Media Center Edition. As shownin FIG. 1, media center module 110 may include a graphical userinterface 113, link structure 115, and registration manager 117.

The functionalities and third party application associated with mediacenter module 110 are typically organized with link structure 115. Linkstructure 115 includes multiple links that point to local locations incomputing device 105 for media content and applications, such as thirdparty applications 136-137. The links may also point to networklocations in other devices, such as server 143-144. Links included inlink structure 115 are presented by graphical user interface 113 forselection and may serve as entry points for applications associated withmedia center module 110. For example, the locations indicated by thelinks may be associated with data for launching applications that handlemedia content. Graphical user interface 113 is configured to enable auser to interact with media center module 110. Typically, graphical userinterface 113 organizes the functionalities of media center module 110with links included in link structure 115.

Registration manager 117 is configured to register applications withmedia center module 110. For example, registration manger 117 may beconfigured to handle registration for third party applications that areinstalled on media center module 110, such as third party applications136-137. In particular, third party applications 136-137 may have entrypoints that enable a user to access the applications from media centermodule 110. The entry points are typically represented by links.Registration manager 117 is configured to incorporate these links intolink structure 115. Graphical user interface 113 may access linkstructure 115 to present the links to the user for accessing third partyapplications 136-137. Typically, link structure 115 includes a primarylink for each of the third party applications 136-137. The primary linkserves as the main entry point for the corresponding application.

Registration manager 117 may also include a conditional link for a thirdparty application in link structure 115. A conditional link points to alocation that is different from the location associated with the primarylink for the third party application. A conditional link is typicallyassociated with a condition. When the condition exists, the conditionallink replaces the primary link as the main entry point for the thirdparty application. The location associated with the conditional link mayserve as a unified place for aggregating asynchronous notificationsabout new content provided by the third party application.

For example, third party application 136 in media center module 110 mayspecify a conditional link that points to a page for accessing newcontent when they are available. Third party application 136 may receivethe new content from third party provider services 146. Third partyapplication 136 may notify media center module 110 to use theconditional link as the main entry point when the new content has beendownloaded. The media center module 110 may display a message ingraphical user interface 113 about the new content. In this manner, auser may be informed of the new content without having to launch thirdparty application 136. Also, the user is automatically directed to alocation for accessing the new content when the user selects to launchthe third party application. In one embodiment, media center module 110may include a page dedicated to new content notifications along withconditional links for the third party applications that provide the newcontent.

Digital media files 120 are digital media content managed by mediacenter module 110. Digital media files 120 may include any type ofcontent, such as video files, audio files, documents, graphics,pictures, web pages, or the like. Media center module 110 may beconfigured to organize digital media files 120 with the context of thefiles, such as the artist, album, genre, producer, director, or thelike. A user of digital media files 120 may desire to obtain moreinformation about a particular file or find other media content similarto the file. Media center module 110 may be configured to allow thirdparty applications to register as context handlers to provideinformation to the user in a particular context. For example, linkstructure 115 may include locations where contextual links associatedwith each particular context are stored. Media center module 110 mayinclude links of the third party applications registered as contexthandlers in link structure 115 at locations associated with theregistered context.

Media center module 110 may be configured to enable a user who desirescontextual information to select and interact with context handlers. Forexample, if a user chooses a particular song in media center module 110and selects to find other media content in the same context as thechosen song, media center module 110 may direct the user to the handlerfor that context. Media center module 110 may provide contextualinformation of the chosen song to the context handler so that thehandler may provide media content related to the context to the user.For example, media center module 110 may provide the contextualinformation as a HTML Post message to the third party application thatis registered to be the context handler.

FIG. 2 illustrates an example implementation of a conditional link inmedia center module 110 shown in FIG. 1. In this example, a third partyapplication named More Music is registered with media center module 110.As shown in FIG. 2, link structure 115 includes entries that areassociated with More Music. For illustrative purpose, only a few entriesin link structure 115 are shown. A third party application mayregistered with media center module 110 in any manner, such as bycommunication through an API offered by media center module 110 or byproviding a setup file with setup information.

Typically, each application registered with media center module 110 isidentified with a global universal identification (GUID) in linkstructure 115. In FIG. 2, More Music is identified by “appID A”. Linkstructure 115 may also include links 211 associated with More Music.Each of the links 211 may also be identified with a GUID. In thisexample, two links are included for More Music and are identified as“linkID A” and “linkID B”. Each of the links points to a specificlocation from which program codes associated with More Music can beretrieved for launching the application. The locations associated withthe links may be a local location, such as a local file, or a networklocation, such as an Internet address. In this example, “linkID A” isassociated with a local file provided by More Music. The “linkID B” isassociated with a web page provided by a More Music network server.

Link structure 115 may also include entry points 213 for More Music.These entry points are provided by More Music to media center module 110during registration. As shown in FIG. 2, a main entry point and aconditional entry point are included for More Music. The main entrypoint provides program access to More Music in media center module 110under normal circumstances. The conditional entry point is analternative access location for More Music under a certain condition.Typically, media center module 110 provides program access to a userusing the main entry point. The application associated with More Musicmay determine that the certain condition exists and may notify mediacenter module 110 to use the conditional entry point for program accessto More Music.

In FIG. 2, example screens of graphical user interface 113 for mediacenter module 110 are shown to illustrate the use of a conditional link.Screen 203 shows a main music page provided by graphical user interface113. Screen 203 includes multiple entry points for launching third partymusic programs in media center module 110. One of the entry points isentry point 207 for More Music. The entry point corresponds to the entrypoints 213 in link structure 115. A user may select entry point 207 tolaunch an application associated with More Music. Under normalcircumstances, media center module 110 is configured to launch MoreMusic with the main entry point associated with “linkID A”. In responseto the user selection, the graphical user interface 113 displays themain launch screen 204 for More Music. However, if media center module110 receives a notification from the More Music application to implementthe conditional entry point, media center module would launch More Musicwith the conditional entry point specified in link structure 115. Inthis example, the conditional entry point is implemented when there isnew music content offered by More Music. In response to the userselecting to launch More Music, the graphical user interface 113displays the new music screen 205.

FIG. 3 illustrates an example implementation of a contextual link inmedia center module 110 shown in FIG. 1. The example in FIG. 3 isimplemented when the third party application for More Music isregistered with media center module 110 and requests to be a contextinformation handler. The data in link structure 115 associated with MoreMusic includes a contextual link 307, which is the entry point for theapplication for More Music. A third party application may register to bea handler for any context provided by media center module 110. In thisexample, More Music registers to be a context handler for a context inmusic. Link structure 115 includes More Music's entry point link for themusic genre context. Media center module 110 is thus configured todirect requests for information for music genre to contextual link 307associated with More Music.

In FIG. 3, an example screen of graphical user interface 113 for mediacenter module 110 is shown to illustrate the use of a contextual link.Screen 303 shows a music page provided by graphical user interface 113to access music files that are managed by media center module 110. Themusic files may be organized in accordance with contextual information,such as genre. In this example, screen 303 shows songs (e.g. musicfiles) in the rock genre that are available for user selection. As shownin FIG. 3, song 310 has been selected. Graphical user interface 113 thenprovides menu 312 to enable the selection of actions available for song310. One of the selections includes action 314 for retrievinginformation in the current context of the rock genre. Since More Musicregistered to be the handler for music genre, the selection of thisaction causes contextual link 307 to be activated and the direction to alocation associated with More Music. Media center module 110 isconfigured to provide the contextual information to More Music so thatMore Music can provide information associated with the current context.For example, media center module 110 may provide the contextualinformation as POST data in an HTTP request. In this example, thecontextual information may include the information that the currentcontext is the rock genre. More Music may include a page at the locationspecified by the contextual link with information related to the rockgenre.

It is to be appreciated that a third party application may register tobe a handler in multiple context. Also, the contextual informationprovided by the media center module to the registered third partyapplications may include any type of data about a media, such as genre,artist, song, album, or the like.

FIG. 4 shows an example process 400 for incorporating a conditional linkfor navigating to a media application. Process 400 may be used by amedia center module to enable a third part application to provide aconditional entry point for the application. At block 403, a primarylink and a conditional link associated with an application areidentified. The primary link serves as the main entry point forlaunching the third party application and the conditional link is thealternative entry point that is implemented under a certain condition.The links may be provided to the media center module when the thirdparty application registers with the module.

At block 405, the links are incorporated into a link structureassociated with the media center module. The link structure includesentries for each application that has registered with the media centermodule. At block 407, the entry point for the application in a graphicaluser interface provided by the media center module is associated withthe primary link. Thus, a selection of the entry point will cause themedia center module to direct to the location indicated by the primarylink.

At block 409, data is received from the application by the media centermodule. The application may provide any type of data to the media centermodule, such as media content and related information. The applicationmay also provide a notification to the media center module to use aconditional link. For example, the application may be configured toprovide some requested media content to the media center module. Whenthe downloading of the media content has been completed, the applicationmay notify the media center module to use the conditional link, whichpoints to the location for accessing the newly downloaded media content.

At block 411, a determination is made whether a notification to useconditional link is provided by the application. If not, process 400goes to return block 421. If a notification has been provided, process400 goes to block 413 where the application entry point is associatedwith the conditional link. At decision block 415, a determination ismade whether the application entry point is selected. If not, process400 goes to return block 421. If the entry point has been selected,process 400 continues at block 417 where the media center module directsto the location indicated by the conditional link. At block 419, theapplication entry point is associated back to the primary link. Process400 goes to block 421 where the process is returned to perform othertasks.

FIG. 5 shows an example process 500 for incorporating contextual linksfor navigating to a media application. Process 500 may be used by amedia center module to enable a third party application to provideinformation associated with a context. At block 502, contextual linksassociated with an application are identified. Each contextual link isrelated to a specific context and serves as the entry point for theapplication. The contextual links may be provided to media center modulewhen the application registers with the module as context informationhandler.

At block 504, the contextual links are incorporated at locations in alink structure corresponding to the contexts of the contextual links. Atblock 506, a selection of an item provided by the media center module isreceived. The item may include any media content, such as an audio file,a video file, a document, or the like. At block 508, a selection toaccess information associated with the item is received. At block 510,the context associated with the item is identified. At block 512, acontextual link associated with the selected item is determined. Atblock 514, the media center module directs to the location associatedwith the contextual link. The media center also provides data about thecontext to the location. For example, the data may be provided as POSTdata in an HTTP request to the location.

The example code below may be used by a media center module to providean Application Program Interface (API) for a third party application toregistered with the module.

MediaCenter.Registrar RegisterApplication(string appGuid, string name,string companyName); UnregisterApplication(string appGuid);RegisterLink(string linkGuid, string name, string description, stringurl, string startImageUrl, string thumbnailUrl, int capabilities, stringappGuid); UnregisterLink(string linkGuid); AssociateLink(stringlinkGuid, string associationType, string category);DisassociateLink(string linkGuid, string associationType, stringcategory);

The example code below may be used by a third party application tointeract with the API of the media center module shown above.

reg = MediaCenter.Registrar; string installDir = “file://c:\ProgramFiles\FooBar Inc\MoreMusic”; // Registering an extensibilityapplication: string myAppGuid =“{e9dc1cb5-5b17-4b21-bd66-5e0c2efe8175}”;reg.RegisterApplication(myAppGuid, “MoreMusic”, “FooBar, Inc.”); //Registering a link: string myLinkGuid =“{c1bc45e2-c4d8-4226-a44f-a2bf38532618}”; reg.RegisterLink( myLinkGuid,“MoreMusic”, “MoreMusic is your one-stop shop for all music, all thetime.”, installDir + “home.htm”, installDir + “startimage.png”,installDir + “thumbnail.png”, 0, myAppGuid); // Associating a link withvarious places within Media Center: reg.AssociateLink(myLinkGuid,“Programs”, “”); reg.AssociateLink(myLinkGuid, “MoreWithThis”,“Artist,Album,Song,Genre”); reg.AssociateLink(myLinkGuid, “Services”,“Music,Radio”); // Registering and associating a “new for me” link:string myNewLinkGuid = “{7abeaef5-2839-4c30-a8dd-a6168aa37db4}”;reg.RegisterLink( myNewLinkGuid, “New albums available from MoreMusic”,“MoreMusic has some new albums you might be interested in purchasing.”,installDir + “newforme.htm”, installDir + “startimage.png”, installDir +“thumbnail.png”, 0, myAppGuid); reg.AssociateLink(myNewLinkGuid,“NewForMe”, “”); // Removing a “new for me” link (unregisters andremoves associations): reg.UnregisterLink(myNewLinkGuid); // Removingthe whole application (unregisters app plus all its links andassociations): reg.UnregisterApplication(myAppGuid);

The example code below may be incorporated in an extensible markuplanguage (XML) file that serves as input to the API shown above.

<application appGuid=”{e9dc1cb5-5b17-4b21-bd66-5e0c2efe8175}”name=”MoreMusic” companyName=”FooBar, Inc.”> <linklinkGuid=”{c1bc45e2-c4d8-4226-a44f-a2bf38532618}” name=”MoreMusic”description=“MoreMusic is your one-stop shop for all music, all thetime.” url=“.\home.html”; startImageUrl=“.\startimage.png”thumbnailUrl=“.\thumbnail.png” capabilities=”0”> <associationtype=”Programs” /> <association type=”MoreWithThis”category=“Artist,Album,Song,Genre” /> <association type=”Services”category=“Artist,Album,Song,Genre” /> </link> <link>linkGuid=”{7abeaef5-2839-4c30-a8dd-a6168aa37db4}” name=”New albumsavailable from MoreMusic” description=“MoreMusic has some new albums youmight be interested in purchasing.” url=“.\newforme.html”;startImageUrl=“.\MoreMusic\startimage.png”thumbnailUrl=“.\MoreMusic\thumbnail.png” capabilities=”0”> <associationtype=”NewForMe” /> </link> </application>

FIG. 6 shows an exemplary computer device 600 for implementing thedescribed systems and methods. In its most basic configuration,computing device 600 typically includes at least one central processingunit (CPU) 605 and memory 610.

Depending on the exact configuration and type of computing device,memory 610 may be volatile (such as RAM), non-volatile (such as ROM,flash memory, etc.) or some combination of the two. Additionally,computing device 600 may also have additional features/functionality.For example, computing device 600 may include multiple CPU's. Thedescribed methods may be executed in any manner by any processing unitin computing device 600. For example, the described process may beexecuted by both multiple CPU's in parallel.

Computing device 600 may also include additional storage (removableand/or non-removable) including, but not limited to, magnetic or opticaldisks or tape. Such additional storage is illustrated in FIG. 6 bystorage 615. Computer storage media includes volatile and nonvolatile,removable and non-removable media implemented in any method ortechnology for storage of information such as computer readableinstructions, data structures, program modules or other data. Memory 610and storage 615 are all examples of computer storage media. Computerstorage media includes, but is not limited to, RAM, ROM, EEPROM, flashmemory or other memory technology, CD-ROM, digital versatile disks (DVD)or other optical storage, magnetic cassettes, magnetic tape, magneticdisk storage or other magnetic storage devices, or any other mediumwhich can be used to store the desired information and which canaccessed by computing device 600. Any such computer storage media may bepart of computing device 600.

Computing device 600 may also contain communications device(s) 640 thatallow the device to communicate with other devices. Communicationsdevice(s) 640 is an example of communication media. Communication mediatypically embodies computer readable instructions, data structures,program modules or other data in a modulated data signal such as acarrier wave or other transport mechanism and includes any informationdelivery media. The term “modulated data signal” means a signal that hasone or more of its characteristics set or changed in such a manner as toencode information in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. The term computer-readable media asused herein includes both computer storage media and communicationmedia. The described methods may be encoded in any computer-readablemedia in any form, such as data, computer-executable instructions, andthe like.

Computing device 600 may also have input device(s) 635 such as keyboard,mouse, pen, voice input device, touch input device, etc. Outputdevice(s) 630 such as a display, speakers, printer, etc. may also beincluded. All these devices are well know in the art and need not bediscussed at length.

While the preferred embodiment of the invention has been illustrated anddescribed, it will be appreciated that various changes can be madetherein without departing from the spirit and scope of the invention.

1-16. (canceled)
 17. One or more device-readable media encoded with oneor more device-executable components including a media center moduleconfigured to manage applications, the media center module comprising: alink structure including links associated with the applications, each ofthe links correspond to an entry point for at least one of theapplications; and a registration manager configured to register theapplications at the media center module to handle context informationrequests, the registration manager further configured to incorporate thelink corresponding to each registered application into locations in thelink structure associated with the context registered to theapplication.
 18. The one or more device-readable media as recited inclaim 17, wherein the registration manager is further configured toregister each application to handle context information requests for aplurality of contexts.
 19. The one or more device-readable media asrecited in claim 17, wherein the media center module is furtherconfigured to determine a request for information associated with aparticular context and to send a message with the request to aparticular application that is registered for the particular context.20. The one or more device-readable media as recited in claim 19,wherein the message is a HTTP message having information identifying thecontext as HTTP POST data.
 21. A programmable device comprising: one ormore processing units; and one or more device-readable media encodedwith executable instructions which, when executed by the one or moreprocessing units, cause the one or more processing units to: registerdifferent media applications to handle different digital media contextson the programmable device by storing associated entry points for thedifferent media applications; determine a selected context for aparticular media item that is accessed on the programmable device;identify a selected media application that has registered to handle theselected context; and direct to a selected entry point that wasregistered by the selected media application.
 22. The programmabledevice of claim 21, embodied as a computer.
 23. The programmable deviceof claim 21, wherein the particular media item comprises video data. 24.The programmable device of claim 23, wherein the video data is stored onthe programmable device when the particular media item is accessed. 25.The programmable device of claim 23, wherein the selected contextidentifies a genre of the video data.
 26. The programmable device ofclaim 25, wherein the executable instructions, when executed by the oneor more processing units, cause the one or more processing units to:provide the genre of the video data to the selected media application.27. The programmable device of claim 26, wherein the executableinstructions, when executed by the one or more processing units, causethe one or more processing units to: determine another selected contextfor another media item that is accessed on the programmable device;identify another selected media application that has registered tohandle the another selected context; and direct to another selectedentry point that was registered by the another selected mediaapplication, wherein the selected media application and the anotherselected media application are different applications.
 28. Theprogrammable device of claim 27, wherein the another media itemcomprises music data.
 29. The programmable device of claim 28, whereinthe another selected context identifies a music genre, artist, or albumfor the music data.
 30. The programmable device of claim 29, wherein theexecutable instructions, when executed by the one or more processingunits, cause the one or more processing units to: provide the musicgenre, the artist, or the album to the another selected mediaapplication.
 31. A method performed by one or more processing units, themethod comprising: registering different media applications to handledifferent digital media contexts on a device by storing associated entrypoints for the different media applications; determining a selectedcontext for a particular media item that is accessed on the device;identifying a selected media application that has registered a selectedentry point to handle the selected context; and providing the selectedcontext to the selected media application via the selected entry point.32. The method of claim 31, further comprising: launching the selectedmedia application.
 33. The method of claim 31, further comprising:displaying a plurality of media items that are available for userselection; and receiving a first selection of the particular media itemfrom the displayed plurality of media items.
 34. The method of claim 33,further comprising: responsive to the first selection, displaying a menuproviding a plurality of actions associated with the particular mediaitem; and receiving a second selection of a selected action from themenu, the selected action being for retrieving information in theselected context, wherein the providing the selected context to theselected media application is performed responsive to receiving thesecond selection.
 35. The method of claim 34, wherein the plurality ofactions of the menu include another action for playing the particularmedia item.
 36. The method of claim 34, wherein the plurality of actionsof the menu include another action for deleting the particular mediaitem and a further action for adding the particular media item to aplaylist.